package com.senseuni.da.utils;

import java.util.HashMap;
import java.util.Map;

public class TimeZoneLookup {

    // 创建一个映射表，保存 UTC 偏移量与时区 ID 的映射关系
    private static final Map<Integer, String> timeZoneMap = new HashMap<>();

    static {
        // 初始化时区映射表
        timeZoneMap.put(-12, "Etc/GMT+12");
        timeZoneMap.put(-11, "Etc/GMT+11");
        timeZoneMap.put(-10, "Pacific/Honolulu");
        timeZoneMap.put(-9, "Pacific/Anchorage");
        timeZoneMap.put(-8, "America/Los_Angeles");
        timeZoneMap.put(-7, "America/Denver");
        timeZoneMap.put(-6, "America/Chicago");
        timeZoneMap.put(-5, "America/New_York");
        timeZoneMap.put(-4, "America/Houston");
        timeZoneMap.put(-3, "America/Argentina/Buenos_Aires");
        timeZoneMap.put(-2, "Etc/GMT+2");
        timeZoneMap.put(-1, "Atlantic/Azores");
        timeZoneMap.put(0, "UTC");
        timeZoneMap.put(1, "Europe/Paris");
        timeZoneMap.put(2, "Europe/Athens");
        timeZoneMap.put(3, "Europe/Moscow");
        timeZoneMap.put(4, "Asia/Dubai");
        timeZoneMap.put(5, "Asia/Karachi");
        timeZoneMap.put(6, "Asia/Almaty");
        timeZoneMap.put(7, "Asia/Bangkok");
        timeZoneMap.put(8, "Asia/Shanghai");
        timeZoneMap.put(9, "Asia/Tokyo");
        timeZoneMap.put(10, "Australia/Sydney");
        timeZoneMap.put(11, "Pacific/Guadalcanal");
        timeZoneMap.put(12, "Pacific/Fiji");
    }

    /**
     * 根据 UTC 偏移量返回对应的时区 ID
     *
     * @param offset 偏移量（单位：小时）
     * @return 对应的时区 ID
     */
    public static String getTimeZoneByOffset(int offset) {
        // 处理 invalid 或者不支持的偏移量
        int rawOffset = offset / 3600;
        if (timeZoneMap.containsKey(rawOffset)) {
            return timeZoneMap.get(rawOffset);
        } else {
            return "";
        }
    }

}
